package someTestExcemple.huaweiOd.string;

import java.util.*;

//华为OD机试 - 字符串摘要（Java 2025 A卷 100分）
//https://blog.csdn.net/guorui_java/article/details/131902336
public class StringDigests {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 不区分大小写
        String line = sc.nextLine().toLowerCase();

        // 字母出现的次数
        int[] chCountArr = new int[128];

        // 字符串中的字母
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < line.length(); i++) {
            char c = line.charAt(i);
            if (c >= 'a' && c <= 'z') {
                chCountArr[c]++;
                builder.append(c);
            }
        }

        line = builder.toString();

        // 统计连续字符和非连续字符的字符和个数
        List<MyCharBean> charList = new ArrayList<MyCharBean>();

        // 该字母连续次数记为1
        int continuousCount = 1;

        // 遍历输入的字符串
        for (int i = 0; i < line.length(); i++) {
            // 当前字母
            char current = line.charAt(i);
            // 下一个字符
            char next = ' ';
            // 如果不是最后一个字符
            if (i + 1 != line.length()) {
                next = line.charAt(i + 1);
            }

            // 后面字符串中该字母的连续个数
            chCountArr[current]--;

            // 如果当前字母和上一个字母相同，该字母连续次数记为+1
            if (current == next) {
                continuousCount++;
                // 如果当前字母和上一个字母不同
            } else {
                // 如果当前字符的连续次数大于1，表示是连续字符，输出即可
                // 如果只有1个，则要获取后面字符串中该字符的个数
                int num = continuousCount > 1 ? continuousCount : chCountArr[current];
                charList.add(new MyCharBean(current, num));
                // 更新current连续次数为1
                continuousCount = 1;
            }
        }

        // 字母和紧随的数字作为一组进行排序，数字大的在前，数字相同时，按字母进行排序，字母小的在前
        charList.sort((x, y) -> x.num != y.num ? y.num - x.num : x.ch - y.ch);

        StringBuilder sb = new StringBuilder();
        for (MyCharBean c : charList) {
            sb.append(c.toString());
        }

        System.out.println(sb);
    }

    /**
     * 字母出现的次数
     */
    static class MyCharBean {
        // 字母
        char ch;
        // 字母出现的次数
        int num;

        public MyCharBean(char ch, int num) {
            this.ch = ch;
            this.num = num;
        }

        /**
         * 按指定格式输出
         */
        @Override
        public String toString() {
            return this.ch + "" + this.num;
        }
    }
}
